package com.pucong.gitee.database.backup.business.sys.service;

import com.pucong.gitee.database.backup.common.entity.sys.ChangeFileStatusVo;
import com.pucong.gitee.database.backup.common.entity.sys.SysFile;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 附件操作 service接口
 *
 * @author pucong
 * @company gitee.com/pucong
 * @create 2020-12-02
 */
public interface SysFileService {

    /**
     * 根据主键获取
     * @param id
     * @return
     */
    SysFile getSysFileById(String id);

    /**
     * 根据业务id查询附件信息
     * @param businessId
     * @return
     */
    List<SysFile> getSysFileByBusinessId(String businessId);

    /**
     * 上传附件
     * @param file
     * @return
     */
    SysFile uploadFile(MultipartFile file);

    /**
     * 删除附件
     * @param id
     * @return
     */
    int deleteFileById(String id);

    /**
     * 根据业务id删除附件
     * @param businessId
     * @return
     */
    int deleteFileByBusinessId(String businessId);

    /**
     * 修改文件状态为正式文件
     * @param changeFileStatusVo
     * @return
     */
    int updateDocChangeStatus(ChangeFileStatusVo changeFileStatusVo);

    /**
     * 下载附件
     * @param uuid
     * @param request
     * @param response
     */
    void downLoadFileById(String uuid, HttpServletRequest request, HttpServletResponse response);

    /**
     * 预览附件
     * @param uuid
     * @param request
     * @param response
     */
    void lookFileById(String uuid, HttpServletRequest request, HttpServletResponse response);

    /**
     * 删除临时文件
     */
    void deleteTmpFile();

    /**
     * 获取上传路径
     * @return
     */
    public String getUploadPath();

    /**
     * 获取缓存路径
     * @return
     */
    public String getTmpPath();
}
